package com.itheima.youdianda.service.impl;

import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.itheima.youdianda.common.R;
import com.itheima.youdianda.dto.YddTagDto;
import com.itheima.youdianda.mapper.YddTagMapper;
import com.itheima.youdianda.pojo.YddTag;
import com.itheima.youdianda.service.YddTagService;
import org.springframework.stereotype.Service;

@Service
public class YddTagServiceImpl extends ServiceImpl<YddTagMapper, YddTag> implements YddTagService {
    /**
     * 修改标签
     *
     * @param yddTag
     * @return
     */
    @Override
    public R updateYddtag(YddTag yddTag) {
        if (ObjectUtil.isNotNull(yddTag)) {
            updateById(yddTag);
            return R.success("标签修改成功");
        }else{
            return R.error("失败");
        }
    }

    /**
     * 获取全部标签
     * author:w
     * @return
     */
    @Override
    public R getAllYddtags() {
        return R.success(list());
    }

    /**
     * 添加标签
     * author:w
     *
     * @param yddTag
     * @return
     */
    @Override
    public R addYddtag(YddTag yddTag) {
        if (StrUtil.isNotBlank(yddTag.getTagname())){
            save(yddTag);
        return R.success("添加成功");
        }else{
            return R.error("失败");
        }
    }

    /**
     * 数据详情(回显)
     * author:w
     *
     * @param id
     * @return
     */
    @Override
    public R getYddTagDetail(Integer id) {
        getById(id);
        return R.success(getById(id));
    }

    /**
     * 分页条件查询
     *
     * @param tagname
     * @param page1
     * @param pageSize
     * @return
     */
    @Override
    public R getPage(String tagname, Long page1, Long pageSize) {
        Page<YddTag> ipage = new Page<>(page1, pageSize);
        //条件查询
        LambdaQueryWrapper<YddTag> wrapper = new LambdaQueryWrapper<>();
        //模糊查询
        wrapper.like(YddTag::getTagname, tagname);
        //排序
        wrapper.orderByDesc(YddTag::getId);
        ipage = page(ipage, wrapper);
        //返回值包装
        YddTagDto yddTagDto = new YddTagDto();
        yddTagDto.setData(ipage.getRecords());
        yddTagDto.setCurrentPage((int) ipage.getCurrent());
        yddTagDto.setPageSize((int) ipage.getSize());
        yddTagDto.setTotalPages((int) ipage.getPages());
        yddTagDto.setCount((int) ipage.getTotal());
        return R.success(yddTagDto);
    }

    /**
     * 删除标签
     *
     * @param id
     * @return
     */
    @Override
    public R deleteYddtag(Integer id) {
        removeById(id);
        return R.success("删除完成");
    }
}
